package com.spark.invoicings.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;

/**
 * 供应商对账明细表
 * 
 * @author sunyan
 * @email sunyan@gmail.com
 * @date 2024-06-13 11:16:27
 */
@Data
@TableName("t_finance_supplier_statement_detail")
public class SupplierStatementDetail implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 供应商对账明细ID
	 */
	@TableId(type = IdType.AUTO)
	private Integer supplierStatementDetailId;
	/**
	 * 供应商对账ID
	 */
	private Integer supplierStatementId;
	/**
	 * 发生日期
	 */
	private Date occurrenceDate;
	/**
	 * 商品ID
	 */
	private Long productId;
	/**
	 * 采购订单ID
	 */
	private Long purchaseOrderId;
	/**
	 * 本次对账总额
	 */
	private double totalAmount;
	/**
	 * 已收款总额
	 */
	private double receivedAmount;
	/**
	 * 待收款总额
	 */
	private double pendingAmount;
	/**
	 * 出库ID
	 */
	private Integer outboundId;
	/**
	 * 入库ID
	 */
	private Integer inboundId;

	/**
	 * 供应商对账单关联对象
	 * */
	@TableField(exist = false)
	private SupplierStatement supplierStatement;

	/**
	 * 商品关联对象
	 * */
	@TableField(exist = false)
	private Product product;

	/**
	 * 应收/应付关联对象
	 * */
	@TableField(exist = false)
	private ReceivablePayableDetail receivablePayableDetail;

	/**
	 * 出库明细表关联对象
	 * */
	@TableField(exist = false)
	private OutboundDetail outboundDetail;

	/**
	 * 入库明细表关联对象
	 * */
	@TableField(exist = false)
	private InboundDetail inboundDetail;

	public Integer getSupplierStatementDetailId() {
		return supplierStatementDetailId;
	}

	public void setSupplierStatementDetailId(Integer supplierStatementDetailId) {
		this.supplierStatementDetailId = supplierStatementDetailId;
	}

	public Integer getSupplierStatementId() {
		return supplierStatementId;
	}

	public void setSupplierStatementId(Integer supplierStatementId) {
		this.supplierStatementId = supplierStatementId;
	}

	public Date getOccurrenceDate() {
		return occurrenceDate;
	}

	public void setOccurrenceDate(Date occurrenceDate) {
		this.occurrenceDate = occurrenceDate;
	}

	public Long getProductId() {
		return productId;
	}

	public void setProductId(Long productId) {
		this.productId = productId;
	}

	public Long getPurchaseOrderId() {
		return purchaseOrderId;
	}

	public void setPurchaseOrderId(Long purchaseOrderId) {
		this.purchaseOrderId = purchaseOrderId;
	}

	public double getTotalAmount() {
		return totalAmount;
	}

	public void setTotalAmount(double totalAmount) {
		this.totalAmount = totalAmount;
	}

	public double getReceivedAmount() {
		return receivedAmount;
	}

	public void setReceivedAmount(double receivedAmount) {
		this.receivedAmount = receivedAmount;
	}

	public double getPendingAmount() {
		return pendingAmount;
	}

	public void setPendingAmount(double pendingAmount) {
		this.pendingAmount = pendingAmount;
	}

	public Integer getOutboundId() {
		return outboundId;
	}

	public void setOutboundId(Integer outboundId) {
		this.outboundId = outboundId;
	}

	public Integer getInboundId() {
		return inboundId;
	}

	public void setInboundId(Integer inboundId) {
		this.inboundId = inboundId;
	}

	public SupplierStatement getSupplierStatement() {
		return supplierStatement;
	}

	public void setSupplierStatement(SupplierStatement supplierStatement) {
		this.supplierStatement = supplierStatement;
	}

	public Product getProduct() {
		return product;
	}

	public void setProduct(Product product) {
		this.product = product;
	}

	public ReceivablePayableDetail getReceivablePayableDetail() {
		return receivablePayableDetail;
	}

	public void setReceivablePayableDetail(ReceivablePayableDetail receivablePayableDetail) {
		this.receivablePayableDetail = receivablePayableDetail;
	}

	public OutboundDetail getOutboundDetail() {
		return outboundDetail;
	}

	public void setOutboundDetail(OutboundDetail outboundDetail) {
		this.outboundDetail = outboundDetail;
	}

	public InboundDetail getInboundDetail() {
		return inboundDetail;
	}

	public void setInboundDetail(InboundDetail inboundDetail) {
		this.inboundDetail = inboundDetail;
	}
}
